Bug 553135 – eog crash: assertion failed. Gtk error:
authorMatthias Clasen <mclasen@redhat.com>
Mon, 22 Sep 2008 18:32:31 +0000 (18:32 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Mon, 22 Sep 2008 18:32:31 +0000 (18:32 +0000)
2008-09-22  Matthias Clasen  <mclasen@redhat.com>

        Bug 553135 – eog crash: assertion failed. Gtk error:
        shortcuts_remove_rows: code should not be reached

        * gtk/gtkfilechooserdefault.c: Disconnect from GtkFileSystem
        signals when we are destroyed, in order to avoid nasty surprises.
        Patch by Claudio Saavedra

svn path=/trunk/; revision=21492

ChangeLog
gtk/gtkfilechooserdefault.c

index eeed61e9b85afe63b40e97f212e0ed234c1dcd8c..e3591e6045d1930ba15bbb6b2d33bb30279b185e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-09-22  Matthias Clasen  <mclasen@redhat.com>
+
+       Bug 553135 – eog crash: assertion failed. Gtk error:
+       shortcuts_remove_rows: code should not be reached
+
+       * gtk/gtkfilechooserdefault.c: Disconnect from GtkFileSystem 
+       signals when we are destroyed, in order to avoid nasty surprises.
+       Patch by Claudio Saavedra
+
 2008-09-22  Emmanuele Bassi  <ebassi@linux.intel.com>
 
        Bug 552789 – Show size column in the search and recently used
index b1c5fa64b45c3e64ab582d24bb2d172c868a4fb5..34e9949915d293f2ce55cafbabf37c69937b6671 100644 (file)
@@ -455,6 +455,7 @@ static void     recent_get_valid_child_iter  (GtkFileChooserDefault *impl,
                                               GtkTreeIter           *child_iter,
                                               GtkTreeIter           *iter);
 static void     set_file_system_backend      (GtkFileChooserDefault *impl);
+static void     unset_file_system_backend    (GtkFileChooserDefault *impl);
 
 
 
@@ -923,6 +924,8 @@ gtk_file_chooser_default_finalize (GObject *object)
   GtkFileChooserDefault *impl = GTK_FILE_CHOOSER_DEFAULT (object);
   GSList *l;
 
+  unset_file_system_backend (impl);
+
   if (impl->shortcuts_pane_filter_model)
     g_object_unref (impl->shortcuts_pane_filter_model);
 
@@ -5404,6 +5407,17 @@ set_file_system_backend (GtkFileChooserDefault *impl)
   profile_end ("end", NULL);
 }
 
+static void
+unset_file_system_backend (GtkFileChooserDefault *impl)
+{
+  g_signal_handlers_disconnect_by_func (impl->file_system,
+                                       G_CALLBACK (volumes_bookmarks_changed_cb), impl);
+
+  g_object_unref (impl->file_system);
+
+  impl->file_system = NULL;
+}
+
 /* This function is basically a do_all function.
  *
  * It sets the visibility on all the widgets based on the current state, and